package com.wt.springboot;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.amqp.rabbit.annotation.EnableRabbit;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;

/**
 * 1.导出数据库文件
 * 整合mybatis操作数据库
 *      1.配置数据源信息
 *      2.使用注解版的mybatis
 *          1)@MapperScan 指定需要扫描的mapper所在的包
 *
 *  开始体验缓存
 *      1.开启基于注解的缓存 @EnableCaching
 *      2.标注注解缓存
 *              @Cacheable
 *              @CacheEvict  清除缓存
 *              @CachePut
 *  2.自动配置
 *      RabbitAutoConfiguration 自动配置
 *      自动配置了连接工厂ConnectionFactory
 *      RabbitProperties 封装了RabbitMQ的配置
 *      RabbitTemplate:给rabbitMq发送和接收消息
 *      AmqpAdmin: rabbitMQ系统功能管理组件   创建和删除queue和exchange,bind
 *
 * 3.Spring默认支持两种方式来和ES交互
 *  1.Jest(默认不生效)
 *      需要到Jest的工具包
 *  2.SpringData ElasticSearch
 *      1).Client节点信息clusterNodes:clusterName
 *      2).ElasticSearchTemple操作Es
 *      3).编写一个ElasticSearchRepository的子接口来操作ES
 *
 * 4.Security
 *      1)引入security包
 *      2）编写springSecurity配置
 *              继承子WebSecurityConfigurerAdapter
 *      3）
 */
//@EnableScheduling   //开启基于注解的定时任务
@EnableAsync        //开启异步注解功能
@EnableRabbit      //开启基于注解的RabbitMQ模式
@MapperScan("com.wt.springboot.mapper")
@SpringBootApplication
@EnableCaching
public class SpringbootApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootApplication.class, args);
    }
}
